Page({
  onLoad({id}) {
    this.getHouseList()
    this.getRepairList()
    if (id) {
      // 编辑
      // 1. 修改标题
      wx.setNavigationBarTitle({
        title: '修改保修信息',
      })
      // 2. 发送请求获取保修的数据
      this.getRepairDetail(id)
    }
  },
  data: {
    currentDate: new Date().getTime(),
    description: '', // 问题描述
    mobile: '', // 手机号码
    houseLayerVisible: false,
    repairLayerVisible: false,
    dateLayerVisible: false,
    repairHouseName: '', // 维修的房屋
    repairItemName: '', // 维修的项目
    houseList: [
      {
        name: '北京西三旗花园1号楼 101'
      },
      {
        name: '北京东村家园3号楼 302'
      },
      {
        name: '北京育新花园3号楼 703'
      },
      {
        name: '北京天通苑北苑8号楼 403'
      }
    ],
    repairItem: [
      {
        name: '水路卫浴'
      },
      {
        name: '电路灯具'
      },
      {
        name: '管道疏通'
      },
      {
        name: '开锁换锁'
      }
    ],
    attachment: []
  },
  openHouseLayer() {
    this.setData({
      houseLayerVisible: true
    })
  },
  closeHouseLayer() {
    this.setData({
      houseLayerVisible: false
    })
  },
  openRepairLayer() {
    this.setData({
      repairLayerVisible: true
    })
  },
  closeRepairLayer() {
    this.setData({
      repairLayerVisible: false
    })
  },

  openDateLayer() {
    this.setData({
      dateLayerVisible: true
    })
  },
  closeDateLayer() {
    this.setData({
      dateLayerVisible: false
    })
  },
  checkSelectHouse() {
    // 如果选择了房屋  houseId 就有值 没有选择就没有值
    const valid = Boolean(this.data.houseId)
    if (!valid) wx.utils.toast('请选择需要报修的房屋')
    return valid
  },
  checkRepairItem() {
    // 如果选择了 需要维修的项目  repairItemId 就有值 反之就没有值
    const valid = Boolean(this.data.repairItemId)
    if (!valid) wx.utils.toast('请选择需要维修的项目')
    return valid
  },
  checkMobile() {
    // 定义正则
    const reg = /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1589]))\d{8}$/
    const valid = reg.test(this.data.mobile)
    if (!valid) wx.utils.toast('请输入合法的手机号码')
    return valid
  },
  checkDate() {
    // 定义正则 日期的格式 2024-09-01   2024/09/01 需要校验这两个种格式
    const reg = /^\d{4}[-|/]\d{2}[-|/]\d{2}$/
    const valid = reg.test(this.data.appointment)
    console.log(valid,22222)
    if (!valid) wx.utils.toast('请选择预约日期')
    return valid
  },
  checkDesc() {
    const valid = Boolean(this.data.description)
    if (!valid) wx.utils.toast('请填写问题描述')
    return valid
  },
  checkAttachment() {
    // 校验是否选择了问题的附件
    const valid = this.data.attachment.length > 0
    if (!valid) wx.utils.toast('请上传问题的附件')
    return valid
  },
  async onSubmit() {
    // 1. 需要对表单里面的数据进行校验 校验是否选择了房屋
    if (!this.checkSelectHouse()) return
    if (!this.checkRepairItem()) return
    if (!this.checkMobile()) return
    if (!this.checkDate()) return
    if (!this.checkDesc()) return
    if (!this.checkAttachment()) return
    // 2. 发送请求 
    // console.log(this.data)
    // 先从 this.data 里面将需要的数据解构
    const { houseId, repairItemId,mobile, appointment ,description,attachment, id } = this.data
    // console.log(houseId, repairItemId,mobile, appointment ,description,attachment)
    await wx.http.post('/repair', {houseId, repairItemId,mobile, appointment ,description,attachment, id})
    // 提交报修成功
    wx.utils.toast('提交报修成功')
    // 跳转页面
    wx.navigateTo({
      url: '/repair_pkg/pages/list/index',
    })
  },
  // 选择报修房屋
  onSelectHouse(e) {
    const { name, id: houseId } = e.detail
    // console.log(e.detail, 2222)
    // 将 name 保存到 data里面
    this.setData({
      repairHouseName: name,
      houseId
    })
  },
  // 选择维修项目
  onRepairItem(e) {
    const { name, id: repairItemId } = e.detail
    // console.log(e,233333)
    // 将 name 保存到 data里面
    this.setData({
      repairItemName: name,
      repairItemId
    })
  },
  // 选择时间
  selectDate(e) {
    // console.log(e)
    const time = wx.utils.formatTime(e.detail)
    // console.log(time, 11111)
    // 点击确认 1. 获取选择的时间 （时间戳 从1970年1月1号0:0:0 到现在的毫秒数）将时间戳转换为 年月日 补0  2. 关闭弹出层
    this.setData({
      dateLayerVisible: false,
      appointment: time
    })
  },
  afterRead(event) {
    // console.log(event)
    const { file } = event.detail
    // console.log(file)
    wx.uploadFile({
      url: 'https://live-api.itheima.net/upload', // 仅为示例，非真实的接口地址
      filePath: file.url,
      name: 'file',
      header: {
        Authorization: `Bearer ${getApp().token}`
      },
      success: (res) => {
        // 将服务器响应回来的数据转换为 对象
        const { data } = JSON.parse(res.data)
        const { attachment = [] } = this.data
        attachment.push({ ...data })
        // console.log(attachment)
        // 将attachment 保存到 this.data里面
        this.setData({
          attachment
        })
      }
    })
  },
  async getHouseList() {
    // 获取审核通过的房屋
    const { data } = await wx.http.get('/house')
    // console.log(res)
    this.setData({
      houseList: data
    })
  },
  async getRepairList() {
    // 获取维修的房屋
    const res = await wx.http.get('/repairItem')
    // console.log(res)
    this.setData({
      repairItem: res.data
    })
  },
  async getRepairDetail(id) {
    const res = await wx.http.get(`/repair/${id}`)
    // console.log(res)
    this.setData({
      ...res.data,
      repairHouseName: res.data.houseInfo
    })
  }
})
